Soru & Cevap

uygulamayı gizlemek ve kod numarası ile başlatmak

18.11.2013 - 12:04

uygulamayı gizlemek istiyorum. ve telefon tuslarindan ornegin *33* yaptigim zaman uygulama acilsin istiyorm

boyle bi uygulama gormustum daha once. nasıl yapıldıgını hakkında bilginiz varmi.

tesekkurler

830 Görüntülenme

7 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user demirqan
demirqan
25.11.2013 - 12:04

yasin kafadar intent tarafinda yanlislik olabilir mi?

 

demir.demirLog("demir ussd calisti");
        
        try{
               Intent i = new Intent(context, MainActivity.class);
               i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               context.startActivity(i);
            
        }catch(Exception e){
               demir.demirLog("ussd"+ e.getMessage()  + e.toString());
              
        }

 

addflags eklemeyi unutmus olabilirsin.

bu sekilde denersen calisicaktir

Profile picture for user demirqan
demirqan
25.11.2013 - 11:50

ustteki verdigim linkte olani yaptim oldu.

kendi main intentinizi yazip start yapmaniz yeterli. ihtiyaci olan arkadaslar kullansin

tesekkurler yasin kafadar

 

Profile picture for user yasinkafadar
yasinkafadar
25.11.2013 - 11:40

Selam Demirkan,

Gönderdiğin linkteki kodları Samsung Galaxy S4 (4.3) cihazımda denedim bir sonuç elde edemedim. Sanırım bazı romlarda çalışmıyor. Ama senin aradığın dediğin gibi tam da böyle bir şey sanırım. 

 

Profile picture for user demirqan
demirqan
25.11.2013 - 10:21

http://stackoverflow.com/questions/17841851/how-to-launch-an-android-service-from-a-custom-call-number/17842046#17842046

 

yapmak istedigim bu kadar kisa mi?

/ Create an intent to start your Service. yazan yere main intenti yazmam yeterli mi

Profile picture for user yasinkafadar
yasinkafadar
22.11.2013 - 10:42

Selam Demirkan,

- USSD'leri yakalan kısım bir service olduğu için telefon reboot olduktan sonra çalışması gerekiyor. Bunun sebebide işletim sistemindeki receive eden kısmı replace edip senin kendi yazdığın servisin çalışması gerekiyor.

- Kendi yazdığn service ile repleace olduktan sonra USSD kolarını yakalayıp sadece USSD kodunu check etmen gerekiyor. Eğer ussd kodu istediğin kod ise mainactivity ini launch etmelisin. 

Yani reboot olduktan sonra senin uygulaman çalışmaya başlamıyor, uygulamanın içindeki service çalışmaya başlıyor.

Profile picture for user demirqan
demirqan
22.11.2013 - 10:01

aslında istedigim tam olarak bu degil. burda telefon acildigi zaman direk baslatilan uygulama var. ben sadece ussd kodunu girdigim zaman uygulamanin acilmasini istiyorum.

fikir verdi linkler ama tam olarak isimi cozemedim

Profile picture for user yasinkafadar
yasinkafadar
19.11.2013 - 11:08

Selam Demirkan,

Neden böyle bir uygulamaya ihtiyaç duyduğunu biraz daha açıklayabilir misin?

 

Bence yapman gerekenler sırasıyla:

1. Gizleyeceğin uygulamandaki AndroidManifest.xml dosyasından Launcher activity ile ilgili bilgileri silmen. Yani aşağıdaki filterleri kaldırman gerekiyor.

<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>

2. Bir ussd numarası çevrilince bunu yakalayıp senin belirlediğin formata uygun olunca da, intent filterları kaldırdığın activity açman gerekecek. Yani normaldeki launcher activity'in.

USSD receive eden bir şey yazman için bazı linkeri incelemeni gerekecek. Bunu yakalayan bir service olması gerekiyor. Manifest dosyanda şöyle birşey olması gerekiyor.

<service android:name=".CDUSSDService" android:enabled="true" android:exported="true" >

<intent-filter> <action android:name="com.android.ussd.IExtendedNetworkService" /> </intent-filter>

</service>

http://stackoverflow.com/questions/12594250/ussd-service-not-working

http://stackoverflow.com/questions/10722178/android-implementing-ussd-features-binding-a-service-to-the-phoneutils-withou

 

Not: Bende bir ara bir proje için bu ussd işleri ile uğraşmıştım. Yazdığın servisin ussd'leri yakalayabilmesi için uygulamayı yükledikten sonra telefona bir restart atman gerekiyor.

Eğer araştırmaların sonucunda sorun devam ederse tekrar buraya yazabilirsin :)